package com.mwh.yuantu.dao;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mwh.yuantu.dao.mapper.VideoInfoMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.mwh.yuantu.entity.VideoInfoEntity;

/**
 * (VideoInfo)表数据库访问层
 *
 * @author maweihong
 * @since 2023-11-01 09:47:33
 */
@Service
public class VideoInfoDao extends ServiceImpl<VideoInfoMapper , VideoInfoEntity> {

    @Autowired
	private VideoInfoMapper videoInfoMapper;

    /**
     * 根据媒体信息主键，查询该视频下的所有播放集数，从小到大排序（状态正常的）
     * @param mediaId 媒体信息主键
     * @return
     */
    public List<VideoInfoEntity> listByMediaId(@Param("mediaId") String mediaId){
        return videoInfoMapper.listByMediaId(mediaId);
    }

    /**
     * 根据媒体信息主键，查询该视频下的所有播放集数，从大到小排序（后台管理专用）
     * @param mediaId 媒体信息主键
     * @return
     */
    public List<VideoInfoEntity> listByMediaIdDesc(@Param("mediaId") String mediaId){
        return videoInfoMapper.listByMediaIdDesc(mediaId);
    }


    /**
     * 根据主键查询信息
     * @param videoId 主键
     * @return
     */
    public VideoInfoEntity selectById(String videoId){
        return videoInfoMapper.selectById(videoId);
    }

    /**
     * 插入一条新数据
     * @param videoInfo
     * @return
     */
    public int insert(VideoInfoEntity videoInfo){
        return videoInfoMapper.insert(videoInfo);
    }

    /**
     * 更新一条数据
     * @param videoInfo
     * @return
     */
    public int update(VideoInfoEntity videoInfo){
        return videoInfoMapper.update(videoInfo);
    }

    /**
     * 查询该视频下的第一集
     * @param mediaId 媒体信息主键
     * @return
     */
    public VideoInfoEntity selectByMediaIdFirst(String mediaId){
        return videoInfoMapper.selectByMediaIdFirst(mediaId);
    }

    /**
     * 查询该视频下的最新一集
     * @param mediaId 媒体信息主键
     * @return
     */
    public VideoInfoEntity selectByMediaIdLast(String mediaId){
        return videoInfoMapper.selectByMediaIdLast(mediaId);
    }

    /**
     * 查询使用该播放器的视频个数
     * @param playerId
     * @return
     */
    public int countByPlayerId(String playerId){
        return videoInfoMapper.countByPlayerId(playerId);
    }

    /**
     * 更新统一封面
     * @param mediaId 媒体信息主键
     * @param image 图片地址
     * @return
     */
    public int updateImage(@Param("mediaId") String mediaId, @Param("image") String image){
        return videoInfoMapper.updateImage(mediaId,image);
    }

    /**
     * 根据媒体主键和第几集，查询是否存在既存数据
     * @param mediaId 媒体主键
     * @param num 第几集
     * @return
     */
    public VideoInfoEntity selectByMediaIdAndNum(@Param("mediaId") String mediaId, @Param("num") String num){
        return videoInfoMapper.selectByMediaIdAndNum(mediaId,num);
    }

    /**
     * 批量更新视频状态
     * @param videoIdArr 主键数组
     * @param status 状态
     * @return
     */
    public int batchUpdateStatus(@Param("videoIdArr") String[] videoIdArr, @Param("status") String status){
        return videoInfoMapper.batchUpdateStatus(videoIdArr,status);
    }

    /**
     * 批量删除
     * @param videoIdArr 主键数组
     * @return
     */
    public int batchDelete(@Param("videoIdArr") String[] videoIdArr){
        return videoInfoMapper.batchDelete(videoIdArr);
    }

    /**
     * 根据视频主键查询视频播放源
     * @param videoId
     * @return
     */
    public VideoInfoEntity selectVideoPlayById(String videoId){
        return videoInfoMapper.selectVideoPlayById(videoId);
    }

    /**
     * 更新统一权限值
     * @param mediaId
     * @param power
     */
    public int updatePower(@Param("mediaId") String mediaId, @Param("power") String power){
        return videoInfoMapper.updatePower(mediaId,power);
    }

    /**
     * 获取最新视频
     * @param count 获取条数
     */
    public List<VideoInfoEntity> listNewVideo(@Param("count") String count){
        return videoInfoMapper.listNewVideo(count);
    }

    /**
     * 批量更新视频的状态
     * @param param
     * @return
     */
    public int batchUpdate(Map<String, Object> param){
        return videoInfoMapper.batchUpdate(param);
    }

    /**
     * 清空视频点击量
     * @param videoInfo
     */
    public int clearViewCount(VideoInfoEntity videoInfo){
        return videoInfoMapper.clearViewCount(videoInfo);
    }

    /**
     * 获取视频信息（前台播放页面专用）
     * @param videoId 视频主键
     * @return
     */
    public VideoInfoEntity selectByIdWithPortal(String videoId){
        return videoInfoMapper.selectByIdWithPortal(videoId);
    }

    /**
     * 根据媒体主键数组，批量删除视频信息
     * @param mediaIdArr
     * @return
     */
    public int batchDeleteByMediaId(@Param("mediaIdArr") String[] mediaIdArr){
        return videoInfoMapper.batchDeleteByMediaId(mediaIdArr);
    }

}

